Implement P0403R1 - 'Literal suffixes for basic_string_view'. Requires clang 4.0 (specifically, r290744) git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@291457 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/string_view b/include/string_view index f98bbb5..20a4e06 100644 --- a/include/string_view +++ b/include/string_view
@@ -156,6 +156,11 @@ template <> struct hash<u32string_view>; template <> struct hash<wstring_view>; + constexpr basic_string<char> operator "" s( const char *str, size_t len ); // C++17 + constexpr basic_string<wchar_t> operator "" s( const wchar_t *str, size_t len ); // C++17 + constexpr basic_string<char16_t> operator "" s( const char16_t *str, size_t len ); // C++17 + constexpr basic_string<char32_t> operator "" s( const char32_t *str, size_t len ); // C++17 + } // namespace std @@ -749,6 +754,38 @@ return __do_string_hash(__val.data(), __val.data() + __val.size()); } + +#if _LIBCPP_STD_VER > 11 +inline namespace literals +{ + inline namespace string_view_literals + { + inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR + basic_string_view<char> operator "" sv(const char *__str, size_t __len) + { + return basic_string_view<char> (__str, __len); + } + + inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR + basic_string_view<wchar_t> operator "" sv(const wchar_t *__str, size_t __len) + { + return basic_string_view<wchar_t> (__str, __len); + } + + inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR + basic_string_view<char16_t> operator "" sv(const char16_t *__str, size_t __len) + { + return basic_string_view<char16_t> (__str, __len); + } + + inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR + basic_string_view<char32_t> operator "" sv(const char32_t *__str, size_t __len) + { + return basic_string_view<char32_t> (__str, __len); + } + } +} +#endif _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_STRING_VIEW